Continuous Integration

Continuous Integration is a well know practice that many developer teams had acquired. Basically Continuous Integration consist in execute plenty frequently an automated integration procedure (download app source, build app, execute tests, etc.) in order to rapidly detect errors and always ensure a deliverable build. Here at CodigoDelSur we are really happy with the results of this practice, it has been super helpful to anticipate issues on our apps.

On this page we are going to enumerate and explain some of the tools we use to implement continuous integration in our projects. Because every project has its own nature, continuous integration flows might be very different between projects. That's why we can not give you a recipe of which ci tools you must to use, we just can tell you which ones we used and have gave us nice results.

Automation server

The Automation server is in charge of execute the continuous integration flows or pipeline. Depending on the configured triggers, the automation server will execute a certain pipeline. The possible flows are almost infinite, for example you can build and test your app when the repo has received changes, or you can generate a test build every morning for the QA team etc. As it was mentioned before, all depends on the project nature.

As automation servers we usually use our Jenkins locally hosted or Bitrise. Also we have a nice experience using CircleCi.

Fastlane

We love Fastlane, it's the main automation tool that we use. It allows us to automate a lot of task like downloading the latest provisioning profile, tests our apps, archive them, distribute them, notify the results of the flows via slack, etc. Fastlane contains a series of tools that are in charge of those tasks. Also it provides you with a Fastfile file where you can write your flows. Beside the Fastlane's main tools it has a series of actions that are awesome!. You can check our generic fastfile here.

Here is the documentation section where you can find some useful articles like Jenkins Integration or CircleCi config.

Testing

To test our apps we have used mainly the apple's test frameworks XCtest and UI XCTest. For those how are new to unit testing here is a video explaining a little bit the basic theoretical concepts. Also we recommend you to watch the WWDC 2015 UI Testing in Xcode, it gives you a nice overview of the UI XCTest.

Other links:

BDD - Behavior Driven Development

We also have used the BBD framework Cedar. It seems to us to be a really nice framework and really easy to use. If you want to know more about this great practice you can check the following links: http://behaviourdriven.org, agilealliance and Wikipedia - BDD.

Other Tools